// 路由守卫，登录鉴权，页面鉴权
import router from '../router/index' // 引入路由表
import { getCookie } from './auth' // 引入cookie
import store from '../store'

// 思路：制作路由白名单，有token进入主页面，无token返回登录页面
const whiteList = ['/login']
router.beforeEach((to, from, next) => {
  const token = getCookie('token')

  if (token) {
    if (to.path === 'login') return next('/userlist')
    // 拉取侧边栏数据 实现动态路由 进入首页
    store.dispatch('menu/GET_MENU_LIST')
      .then(res => {
        // 这里要实现动态路由
        createdAsyncRoute(res)
        console.log(res)
      })
      // 这里没有catch捕捉错误，可以在vuex里统一捕捉错误

    return next()
  }

  // 路由白名单 直接进入
  if (whiteList.includes(to.path)) {
    return next()
  }
  next()
})

function createdAsyncRoute (data) {
  // 动态路由
  data.forEach(item => {
    item.children.forEach(it => {
      const path = it.path.replace(/([a-z])([a-z]+)/, ($, $1, $2) => $1.toUpperCase() + $2)
      const obj = {
        path: '/userlist/' + it.path,
        name: it.path,
        component: () => import('@/components/' + item.path + '/' + path)
      }
      router.addRoute('userlist', obj)
    })
  })

  console.log(router.getRoutes())
}
